/*
 * RenderSystem.h
 *
 *  Created on: 2009/01/05
 *      Author: Yongshik Cho
 */

#ifndef RENDERSYSTEM_H_
#define RENDERSYSTEM_H_

#include "RenderDevice.h"
#include "SystemTimer.h"
#include "SystemFontsManager.h"
#include "TickableManager.h"
#include "TextureManager.h"
#include "SceneManager.h"
#include "ParticleManager.h"
#include "WorldManager.h"


class RenderSystem
{
public:
	RenderSystem(const HWND hWnd, const Rect2D& rect, DeviceSettings* sets);
	virtual ~RenderSystem();

public:
	inline RenderObjectContainer* getRenderRoot() const
	{
		if(!mSceneManager)
			return 0;

		return mSceneManager->getRenderRoot();
	}

	virtual void render();
	virtual void tick();

private:
	RenderDevice* 			mDevice;
	SystemTimer*			mSystemTimer;
	SystemFontsManager*		mSystemFontsManager;
	TickableManager*		mTickableManager;
	SceneManager*			mSceneManager;
	ParticleManager*		mParticleManager;
	WorldManager*			mWorldManager;
};

#endif /* RENDERSYSTEM_H_ */
